let ajaxURL = require("../../ajaxUtil/request")
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 定义一个变量，用来存储商品详情信息
    goodsInfo: [],
    // b.2 添加一个状态为 is_collect，表示的是当前商品的收藏状态
    is_collect: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    //a.1 获取从页面传递过来的 goods_id
    // let goods_id = options.goods_id
    // 解构赋值语法
    let {
      goods_id
    } = options
    // console.log(goods_id);
    // a.2 发送请求获取数据
    let result = await ajaxURL.request({
      url: "goods/detail",
      data: {
        goods_id
      }
    })
    // b.5 页面刚加载的时候，判断一下当前的商品收藏状态
    // 如果已经收藏 is_collect=true
    // 如果没有收藏 is_collect=false
    let collect = wx.getStorageSync('collect') || []
    let index = collect.findIndex(v => v.goods_id == goods_id)
    if (index === -1) {
      // 说明商品没有收藏过 is_collect => false
      this.setData({
        is_collect: false
      })
    } else {
      this.setData({
        is_collect: true
      })
    }
    // console.log(result.message);
    // 将shanp返回的数据通过 setData 存到data中
    this.setData({
      goodsInfo: result.message
    })
  },
  // 加入购物车功能
  handleAddToCart: function () {
    // c.1 首先从本地缓存中获取当前的购物车的数据（如果有后台接口，应该从后台接口获取购物车的数据）
    // c.1.1 本地缓存中的购物车以 cart 为key 存起来
    let cart = wx.getStorageSync('cart') || []
    // c.2 判断当前的商品在购物车是否存在
    let index = cart.findIndex(v => v.goods_id == this.data.goodsInfo.goods_id)
    if (index === -1) {
      // c.3 将当前商品加入购物车中
      // c.3.1 goodInfo 选中的状态 checked
      // c.3.2 goodsInfo 数量 ，标示顿当前选中商品的数量
      // c.3.3 如果当前的上【数量是0或由于数量出错，出现负数情况，也是添加不到购物数量中
      if (this.data.goodsInfo.goods_number <= 0) {
        wx.showToast({
          title: '当前的商品库存是为0',
        })
      } else {
        let goodsInfo = this.data.goodsInfo
        goodsInfo.checked = true
        goodsInfo.num = 1
        cart.push(goodsInfo)
        wx.showToast({
          title: '加入购物车成功',
        })
      }
    } else {
      // c.4 当前的商品已经在购物车中
      // c.4.1 判断当前的数量大于库存
      // c.4.2 当前添加的数量大于库存，提供用户操作库存，不能添加
      // c.4.3 否则找到该商品，数量加一
      if (cart[index].num + 1 > this.data.goodsInfo.goods_number) {
        wx.showToast({
          title: '添加数量已经超过库存了',
        })
      } else {
        cart[index].num += 1
        wx.showToast({
          title: '已添加商品成功',
        })
      }
    }
    wx.setStorageSync('cart', cart)
  },
  // 收藏商品功能
  handleCollect: function (e) {
    // console.log("收藏页面");
    // b.1 将商品数据存到本地缓存中
    // b.1.1 收藏本地缓存中的 key 名称叫 collect 数据叫[ goodsInfo，goodsInfo]
    // b.1.2用本地缓存同步方式 村商品的收藏信息
    // b.1.3 获取之前本地缓存中的数据
    let collect = wx.getStorageSync('collect') || [] //第一次进来的时候 获取不到 收藏信息，所以要做一个异常处理
    // b.1.4.1 判断当前的商品是否在collect 对象中，根据是goods_id
    let index = collect.findIndex(v => v.goods_id === this.data.goodsInfo.goods_id)
    if (index === -1) {
      // 等于-1说明商品不在本地collect中
      // b.1.5 将当前商品信息 保存到 collect 对象中
      collect.push(this.data.goodsInfo)
      // b.3 将当前的收藏状态修改为true
      this.setData({
        is_collect: true
      })
      wx.showToast({
        title: '收藏商品成功了',
      })
    } else {
      // b.1.6 取消收藏,如果本地缓存中已经有一个缓存的数据，要把原本的删除
      collect.splice(index, 1)
      // b.4 将当前的收藏状态修改为false
      this.setData({
        is_collect: false
      })
      wx.showToast({
        title: '取消收藏',
      })
    }
    wx.setStorageSync('collect', collect)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})